# 查找符合校奖标准的学生
# 1. 成绩 >= 70 分

filepath = '行政班课程学生成绩单.xlsx'

start_row = 11
max_students = 40

students = []

import pandas as pd



def check_score(row):
    # 从第五列开始是各科成绩
    scores = row[4:-6]
    for score in scores:
        # 如果成绩为空, 也是不符合校奖标准
        if score.strip() == '':
            # 有一科成绩为空, 则该学生不符合校奖标准
            print(f"{row[2]}不符合校奖标准，{score.split(':')[0]}成绩为空")
            return False
        # 成绩由 课程名:成绩 组成, 有的是合格/不合格
        if '不合格' in score:
            # 有一科成绩不合格, 则该学生不符合校奖标准
            print(f"{row[2]}不符合校奖标准，{score.split(':')[0]}成绩为不合格")
            return False
        if score.split(':')[1].isdigit():
            if int(score.split(':')[1]) < 70:
                # 有一科成绩小于 70 分, 则该学生不符合校奖标准
                print(f"{row[2]}不符合校奖标准，{score.split(':')[0]}成绩低于70分: {score.split(':')[1]}")
                return False
    return True

# 读取 Excel 文件
df = pd.read_excel(filepath, header=None, skiprows=start_row)

# 遍历每一行数据,转为数组
for index, row in df.iterrows():
    # 第一列是排名，第二列是学号，第三列是姓名，第四列是班级，从第五列开始是各科成绩
    row = row.tolist()

    if check_score(row):
        students.append(row)
        print(f"{row[2]}符合校奖标准")


    if len(students) >= max_students:
        break

# 输出符合校奖标准的学生名单
print(f"\n符合校奖标准的学生名单,共{len(students)}人:")
for student in students:
    print(student[2])

# 保存符合校奖标准的学生名单到新的 Excel 文件
output_filepath = '符合校奖标准的学生名单.xlsx'
df_output = pd.DataFrame(students, columns=df.columns)
df_output.to_excel(output_filepath, index=False)
print(f"\n已将符合校奖标准的学生名单保存到 {output_filepath}")